(レポート) ARC302: Running Lean Architectures: コスト最適化方法 #reinvent
コンニチハ。千葉です。
コスト最適化に関するセッションレポートです。
みなさん、既にご存知の内容も多いかと思いますが、思わぬ発見もあると思いますので是非御覧ください。 私は、AWS Total Cost of Ownership (TCO) Calculatorはこのセッションで初めて知りました。
セッション資料
このセッションで話すこと
- AWSのコストをより下げる方法
- さらなる、スケーラブル、堅牢性、動的なアーキテクチャ
- より革新的な時間の使い方
- 実際のユーザの利用例
- 実装に関する話
2006年から50回の値下げ
AWSは、何度も何度も値下げしています!
AWS Trusted Advisor
コスト削減、システムパフォーマンス、セキュリティに関するベストプラクティスに基づいた推奨事項を知らせてくれます。 無料で利用できます。これを利用する手はないですね。 まずは、AWS Trusted Advisorにアクセスしてみましょう。
クラウド時代のコスト最適化の計画
今までは長いスパンで、計画/構築/運用の最適化をしてきました。 AWSではより短い期間で、システムのデザイン/構築/監視を繰り返し行うことで、コスト最適化することがポイントとなります。
低コストのためのアーキテクチャ 〜とっても簡単な7つのステップ〜
(その1) 使わない時は、EC2インスタンスを停止するべし!
オンプレの場合は、ハードウェアを購入した時にお金がかかります。 クラウド環境は使った分だけ、料金が発生します。つまり、使わないインスタンスを停止することでコストを下げることができます。 例えば、8:00-20:00(12時間)利用する場合、利用しない12時間を停止することにより、フル稼働に比べコストを1/2のコストに抑えることができます。
あるお客様の環境では、35%のコスト削減に繋がったという事例もあります。
(その2) 自動化!じどうか!ジドウカ!すべし!
AWSには、とにかく自動化できる仕組みが整っています。
- インスタンス起動・停止等、バックアップの取得など、ほとんどの機能をAPI経由にて操作可能:AWS SDKs、AWS CLI)
- 構築の自動化:CloudFormation、OpsWorks
- インスタンスのスケールアウト/スケールインの自動化:AutoScaling
- 利用していないリソースの自動削除:Netflix Janitor Monkey(OSS)
- 時間を指定したインスタンスの自動起動・自動停止:Cloudlytics EC2 Scheduler
また、EC2インスタンスに変わり、より少ないリソースで効率的なサービスもあります。
Amazon ECS(Dockerを利用したサーバリソースの有効活用)
AWS Lambda(さらにEC2インスタンスを利用しない、さらなるコスト効率のよりアーキテクチャ)
EC2に比べて40%のコスト削減にも!
(その3) リザーブドインスタンスを使うべし!
EC2やRDSのリソースの事前購入(リソースの利用予約)することにより、オンデマンドの料金に対し大幅な値下げ(最大 75%)を受けることができます。 リザーブドインスタンスは1年または3年という期間に対して購入することができます。(ただし、半年利用して使わなくなった場合でも料金は1年または3年分かかります)
ただし、リザーブドインスタンスでは以下の変更は可能です。
- AZの移動
- EC2-ClassicからEC2-VPC間での移動
- 同じインスタンスタイプ間での、インスタンスサイズの変更(例:m3.large×1をm3.medium×2等。逆もしかり)
まずはオンデマンドで運用してみて角度が高い状態でリザーブドインスタンスを購入するのがいいと思います。
(その4) スポットインスタンスを使うべし!
スポットインスタンスは、入札式のインスタンスでインスタンスの実行コストを大幅に削減できる可能性があります。 スポットインスタンスのスポット価格より入札価格が上回った場合にインスンスタンスを起動します。 逆に下回ってしまうと、無慈悲にインスタンスが削除されてしまいます。 そのため、バッチ用インスタンスの補助やELB配下のインスタンスの補助としての利用が考えられます。
また、今回のアップデートにより、入札価格がスポット価格を下回ったとしても最大6時間は延命が可能です。 スポットインスタンスの利用場面が増えることが予想されます!どんどん使ってコスト削減しましょう!
利用例として、以下が挙げられます。
- ステートレスアプリケーション用のサーバ
- EMR用のインスタンス
- 継続的インテグレーション(CI)
- HPC
- グリッド コンピューティング
- メディアのトランスコードなど
(その5) データ量に応じて料金が増えていくタイプのストレージを利用すべし!
EBSなどのボリュームは、データ配置した容量に対する課金ではなく、確保した容量に対する課金となります。 例えば、100GB確保し10GBデータ格納している場合でも100GB分の料金が発生します。 一方S3を利用すると、10GB分の料金しか発生しません。 またEBSより、S3やGlacierの方が料金が安いため、コスト削減にもつながります。
S3 - Standard
S3 - Standardの特徴
- 99.999999999の耐久性
- SLAは99.99の可用性
- 容量制限がないストレージ
- 高いスループット
- 簡単に利用できる
- 0.0330 /GBから利用できる(東京リージョンの価格)
S3 -IA
S3 - IAの特徴
- S3 - Standardに比べて可用性が少し低くなって、料金が安くなっているストレージ
- 【新発表】Amazon S3に更なる低価格帯ストレージクラス「Standard – IA」が登場
Glacier
Glacierの特徴
参照頻度の低いデータ(法律上保管が必要なデータ等)を格納する、S3より安価なストレージ
- 99.999999999の耐久性
- データ取り出しには3-5時間かかる
- $0.0114 /GBから利用できる(東京リージョンの価格)
- S3 - Standardに比べ77%コストが低い
- S3のライフサイクル機能でのGlacier連携を使うのが簡単で、コスト効率が良い
(その6) DynamoDBの最適化すべし!
DynamoDBを利用している前提となっていますが、DynamoDBに関するコスト最適化です。 読み込み/書き込みのキャパシティユニットがコスト影響が大きい。 最適化するときの注意ポイント
- エラーが発生しないように十分なキャパシティを用意すること
- ピーク時のキャパシティを考慮する
- モニタと調整を定期的に行う
リードキャパシティの削減には
- アプリケーションサーバにてメモリキャッシュをする
- ElastiChacheの利用を検討する
書き込みキャパシティユニットの削減
- 書き込みのバッファとしてSQSを利用する
- Dynamic DynamoDBを利用したスループットの自動調整:Dynamic DynamoDB を使ってみた
その他キャパシティユニットの最適化方法
(その7) サーバの負荷を軽減すべし!
さならなる、サーバのメンテナンス、スケール、コストの軽減をします。
- キャッシュサーバの利用
- CloudFrontの利用
- マネージドサービスの活用
キャッシュサーバの利用
キャッシュサーバを利用することで、負荷の軽減をします
S3やCloudFrontの利用
レスポンスの向上、サーバ負荷の軽減ができます
マネージド・サービスの活用
マネージドサービスを利用することで、アーキテクチャのシンプル化、コスト、運用負荷の低減につながります
TCO Calculator
TCOを見える化し、無駄がないかチェックできます。
その他便利ツール
AWSのコスト見積もりツール
利用料金の確認ページ
コストエクスプローラ
料金上限通知
まとめ
7ステップ、即実践できるものも多いと思いますので、これを機に見直ししてはいかがでしょうか。 きっと、コスト削減に繋がると思います。快適なAWSライフを!